<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>4.人员案例_深度监视</title>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
    <!-- 准备好一个容器-->
    <div id="demo">
        <ul>
            <li>姓名:{{name}}</li>
            <li>性别:{{gender}}</li>
            <li>年龄:对外:{{age.foreignAge}},真实:{{age.realAge}}</li>
        </ul>
        <button @click="age.foreignAge += 1 ">对外年龄+1</button>
        <button @click="age = {foreignAge:100,realAge:200}">age对象替换</button>
        <button @click="age = {foreignAge:100,realAge:200}">开启深度监视</button>

    </div>
</body>

<script type="text/javascript">
    //阻止 vue 在启动时生成生产提示。
    Vue.config.productionTip = false
    new Vue({
        el: '#demo',
        data: {
            name: '小猪佩奇',
            gender: '男',
            age: {
                foreignAge: 18,
                realAge: 42,
            }
        },
        watch: {
            //监视某个对象的某个属性的变化
            // 'age.foreignAge': {
            //     handler() {
            //         console.log("foreignAge被改变了")
            //     }
            // },
            //监视某个对象的改变,(地址值),不监视对象中的属性改变
            // age:{
            //     handler(){
            //         console.log('age被改变了')
            //     }
            // },
            //既要监视某个对象的改变(地址值),又要监视对象中属性的改变
            age: {
                deep: true, //开启深度监视
                handler() {
                    console.log('age被改变了,或者age中某个属性改变了')
                }
            }
        }
    })
</script>

</html>